# twitter_bot/get_tokens.py
import tweepy
import webbrowser
import yaml

# 从 config.yaml 加载基础配置
try:
    with open('config.yaml', 'r') as f:
        config = yaml.safe_load(f)
        api_key = config.get('api_key')
        api_key_secret = config.get('api_key_secret')
        redirect_uri = config.get('redirect_uri')
except (FileNotFoundError, KeyError) as e:
    print(f"错误：无法从 config.yaml 读取配置。请确保 api_key, api_key_secret 和 redirect_uri 已设置。错误: {e}")
    exit()

# 使用 OAuth 1.0a Handler
oauth1_user_handler = tweepy.OAuth1UserHandler(
    consumer_key=api_key,
    consumer_secret=api_key_secret,
    callback=redirect_uri
)

# 1. 获取授权 URL
auth_url = oauth1_user_handler.get_authorization_url(signin_with_twitter=True)
print("请在浏览器中打开以下 URL，并授权您的应用：")
print(auth_url)
webbrowser.open(auth_url)

# 2. 用户授权后，会重定向到你的 redirect_uri，URL中会包含 oauth_token 和 oauth_verifier
# 从终端手动输入 verifier
verifier = input("授权后，请从浏览器地址栏复制 'oauth_verifier' 的值并粘贴到此处：")

# 3. 使用 verifier 获取 access token
try:
    access_token, access_token_secret = oauth1_user_handler.get_access_token(verifier)

    print("\n🎉 成功获取 Access Tokens! 🎉")
    print("-" * 30)
    print(f"Access Token: {access_token}")
    print(f"Access Token Secret: {access_token_secret}")
    print("-" * 30)
    print("\n请将以上两个 Token 复制到您的 config.yaml 文件中。")

except Exception as e:
    print(f"\n获取 Access Token 失败: {e}")